/**
 * 异或数列
 * https://www.lanqiao.cn/problems/1450/learning/?page=1&first_category_id=1&second_category_id=3&tag_relation=intersection&tags=%E7%9C%81%E8%B5%9B,2021&sort=pass_rate&asc=0
 */

import java.util.Scanner;

/**
 这个题是对于 二进制位数 的判断进行的操作，但是只需要判断 二进制位的最高位即可，因为最高位才是获胜的关键，最高位大即对应的结果越大
 存在以下几种情况：因为 X1 ^ X2 ^ ⋯ ^ Xn = S 最后的结果S是固定的
 1：数列中的所有数据异或的结果为0的话，那么即为 平局。因为将数列划分为数量相等的任意两个部分代表双方的选择，各自进行异或，得到的结果一定相等
 2：其他情况：只需要考虑最高位即可：
 1）所有数的最高位中共存在 奇数个1，偶数个0：这样Alice胜。Alice先手选择1，之后Bob选择，Alice主需要和其选择一致即可一直保持领先
 2）所有数的最高位中共存在 奇数个1(个数大于1)，奇数个0
 1.如果Alice先选择0，则Bob选择0
 a.若是Alice一直进行选择0，那么Bob一直选择0，最后0选完后，Bob变成先手，这样1存在奇数个，就是先手的赢，就是 Bob赢
 b.若是Alice在0被选完前选择1，那么Bob选择0，这样1和0均为偶数
 a)若是Alice继续选择1，则此时1为奇数个，那么这时候先手的赢也就是 Bob赢
 b)若是Alice选择0，则Bob选择0。直至0(偶数个)选完，那么这时候Alice先选只能选择1，那么1的个数就从偶数->奇数个，那么这时候先手的赢，Bob赢
 2.如果Alice先选择1，则Bob选择0，这样1和0均为偶数，就会重复上述中的 a) 和 b) 中的内容进行选择。
 3）如果只存在一个1的话，其余都为0，那么Alice胜，Alice先手
 4) 如果最高位的1是偶数的话，那么就无法判断是谁胜利，则循环到下一位上进行再次判断
 */
public class Main12 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        //在此输入您的代码...
        int t = scan.nextInt();
        for(int i = 0;i < t;i++) {
            int n = scan.nextInt();
            int[] arr = new int[n];
            for(int j = 0;j < n;j++) {
                arr[j] = scan.nextInt();
            }
            System.out.println(solve(arr));
        }
        scan.close();
    }

    public static int solve(int[] arr) {
        int sum = 0;
        // 异或所有值
        for(int x : arr){
            sum ^= x;
        }
        if(sum == 0) {
            return 0;
        }

        // 进行判断最高位置
        for(int offest = 19;offest >= 0;offest--) {
            // 计算以下最高位0和1的个数
            int[] tmp = cnt(arr,offest);
            int ones = tmp[1];
            int zeros = tmp[0];
            if(ones == 1 || ones % 2 == 1 && zeros % 2 == 0) {
                return 1;
            }
            if(ones % 2 == 1 && zeros % 2 == 1) {
                return -1;
            }
        }
        return 0;
    }

    public static int[] cnt(int[] arr,int offest) {
        int ones = 0;
        int zeros = 0;
        for(int x : arr) {
            if(((x >> offest) & 1) == 1) {
                ones++;
            }else {
                zeros++;
            }
        }
        return new int[]{zeros,ones};
    }
}
